import sys
input = sys.stdin.readline
n, m = map(int, input().split())
data = input().rstrip()
for _ in range(m):
l, r, c1, c2 = input().rstrip().split()
for i in range(int(l) - 1, int(r)):
if data[i] == c1:
data = data[:i] + c2 + data[i + 1:]
print("".join(data))
#include<iostream>
using namespace std;
int main()
{
// n is the length of the string and m is the number of operations to be performed
int n,m;
cin>>n;
cin>>m;
// arr[n] is the string
char arr[n];
cin>>arr;
int l,r;
char c1,c2;
for(int i=0;i<m;i++)
{
cin>>l;
cin>>r;
cin>>c1;
cin>>c2;
for(int j=l-1;j<=r-1;j++)
{
if(arr[j]==c1)
{
arr[j]=c2;
}
}
}
// for(int i=l-1;i<=r-1;i++)
// {
// for(int j=0;j<m;j++)
// {
// if(arr[i]==c1)
// {
// char fv=arr[i];
// arr[i]=c2;
// c2=fv;
// }
// }
// }
for(int i=0;i<n;i++)
{
cout<<arr[i];
}
}
112. Path Sum | 1556A - A Variety of Operations |
136. Single Number | 169. Majority Element |
119. Pascal's Triangle II | 409. Longest Palindrome |
1574A - Regular Bracket Sequences | 1574B - Combinatorics Homework |
1567A - Domino Disaster | 1593A - Elections |
1607A - Linear Keyboard | EQUALCOIN Equal Coins |
XOREQN Xor Equation | MAKEPAL Weird Palindrome Making |
HILLSEQ Hill Sequence | MAXBRIDGE Maximise the bridges |
WLDRPL Wildcard Replacement | 1221. Split a String in Balanced Strings |
1002. Find Common Characters | 1602A - Two Subsequences |
1555A - PizzaForces | 1607B - Odd Grasshopper |
1084A - The Fair Nut and Elevator | 1440B - Sum of Medians |
1032A - Kitchen Utensils | 1501B - Napoleon Cake |
1584B - Coloring Rectangles | 1562B - Scenes From a Memory |
1521A - Nastia and Nearly Good Numbers | 208. Implement Trie |